package com.seari.custody.mapper;

import com.seari.custody.bean.*;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 读取工程信息概况信息
 */

@Repository
public interface TechnicalAdviceMapper {
    /**
     * 工程信息概况的信息存储入库
     * @param mf
     * @return 存入数据库
     */
    Integer saverOverview(TechnicalAdvice mf);

    /**
     * 读取word信息
     * @param file
     * @return
     */
    TechnicalFile getServieFile(TechnicalFile file);

    /**
     * 生成技审意见并生成列表--许可类\征询类
     * @param map  获取的值
     * @return 生成的列表
     * techcalAdviceList
     */
    List<TemplateWord> techcaladviceList(Map<String, String> map);



    /**
     * 技审意见列表
     * @return 返回列表
     */
    List<TechnicalType> technicalType();

    /**
     *技审意见列表- 许可类
     * @param map 实体类的数据
     * @return 返回列表
     */
    List<TemplateWord> technicalListed(Map<String, String> map);

    /**
     *技审意见列表- 征询类
     * @param map 实体类的数据
     * @return 返回列表
     */
    List<TemplateWord> consultList(Map<String, String> map);


    /**
     * 返回退回信息
     * @param map
     * @return
     */
    List<TemplateWord> technicalbsBackspacing(Map<String, String> map );

    /**
     * 最新技审word文件上传
     * @param tw  需要存入的实体类字段
     * @return
     */
    Integer adviceUpload(TechnicalAdvice tw);

    /**
     * 技审补充附件文件上传
     * @param ta  上传的实体类信息
     * @return
     */
    Integer accessoryupload(TechnicalAccessory ta);

    /**
     * 通过UUID查询技审详情信息
     * @param uuid
     * @return
     * @throws Exception
     */
    public TechnicalAdvice selectTechnicalAdviceByUuid(String uuid) throws Exception;

    /**
     * 根据id查看技审的详细信息
     * @param ta
     * @return
     */
    List<TemplateWord> templatId(TemplateWord ta);

    /**
     * 技审文件删除
     */
    Integer  technicaldelect(String ta);

    /**
     * 专项保护方案删除
     * @param no
     * @return
     */
    Integer  specialdelect(String no);


    public List<TechnicalAccessory> getTechnicalAccessoryListByProjectUuid(String uuid) throws Exception;

    /**
     * 根据uuid得出技审生出模板个数
     * @param fileuuid
     * @return
     */
    Integer technicalnum(String fileuuid);

    /**
     * 获取最新生成的技审类型
     * @param file_uuid
     * @return
     */
    String reviewopinion(String file_uuid);

    /**
     * 获取获取numtext最大的值
     * @return
     */
    String numtextSum() throws Exception;



    /**
     * 获取技审和专项保护方案的列表
     * @return
     */
    List<TechnicalList> technicalzxfalist(String fileUuid);

    /**
     * 获取专项保护方案的所属数据
     * @param no
     * @return
     */
    List<Technicalzxlist> technicalzxfazxfalist(String no);

    /**
     * 获取工程信息uuid
     * @param uuid
     * @return
     */
    String engineeringLacerationStatus(String uuid);

    /**
     * 变更工程信息流程状态
     * @param flowstatus
     * @param uuid
     * @return
     */
    long updateEngineeringLacerationStatus(String flowstatus,String uuid);

    /**
     *变更技审流程状态
     * 1、待处理：没有意见生成时
     * 2、信息概况已退回待接收：我们退回给报审（工程信息概况）
     * 3、处理中：没有草稿上传
     * 4、已发送：草稿上传成功、专项保护方案生成ok，发送至报审
     * 5、报审草稿被退回待处理：报审退回给我们（技审草稿）
     * 6、已完结
     */
    Integer updateFeedback(Map<String, String> map) throws Exception;


    /**
     * 获取技审记录
     * @param paramMap
     * @return
     */
    Map<String, String> serverQueryLine(Map<String, String> paramMap);

    /**
     * 获取最新技审类型、管线、管线内容数据
     */
    Map<String, String> opinionPipeline(Map<String, String> paramMap);


    /**
     * 获取工程的详细信息
     * @param map
     * @return  工程信息详细信息
     */
    Map<String, Object> engineeringInformation(Map<String, String> map);

    /**
     * 历史记录变更
     * @param technicalHistory
     * @return
     * @throws Exception
     */
    Integer serverTechnicalHistory(TechnicalHistory technicalHistory);

    /**
     * 获取是否有技审意见
     */
    Integer countTechnicalAdvice(String uuid);

    /**
     * 获取是否有专项保护方案
     */
    Integer countspecialProtection(String uuid);

    /**
     * 技审草稿数量
     */
    Integer countTechnicalDraft(String uuid);


    /**
     *
     * 对接接口——待办
     *
     */
    List<Map<String, String>> saverBacklog(Map<String, String> map);
}
